module lang.d.types.arraytypes;

import lang.d.types.dtype;
import lang.d.sts.expressions.dexpression;

class TypeDynamicArray: DType {
    private DType myElementsType;

    public this(DType type) {
        myElementsType = type;
    }
}

class TypeNewArray: DType {
    private DType myElementsType;

    public this(DType type) {
        myElementsType = type;
    }
}

class TypeAssociativeArray: DType {
    private DType myValuesType;
    private DType myKeysType;

    public this(DType valuesType, DType keysType) {
        myValuesType = valuesType;
        myKeysType = keysType;
    }
}

class TypeSliceArray: DType {
    private DType myType;
    private DExpression myStartIndex;
    private DExpression myEndIndex;

    public this(DType type, DExpression startIndex, DExpression endIndex) {
        myType = type;
        myStartIndex = startIndex;
        myEndIndex = endIndex;
    }
}

class TypeStaticArray: DType {
    private DType myElementsType;
    private DExpression mySize;

    public this(DType type, DExpression size) {
        myElementsType = type;
        mySize = size;
    }
}
